const utils = require('utils.js')//导入js(模块)
Page({
    data: {
        meters: 0, // 距离-米数记录
        seconds: 0, //秒(累计时间统计/秒)
        latitude: 0, //经度
        longitude: 0, //维度
        running: false, //是否正在运动
        interval: 1000, //记录间隔(刷新位置与点) 以毫秒为单位
        markers: [], //坐标数组
        fake:[  //伪装数组
            {latitude: 23.38189,longitude: 113.44931},
            {latitude: 23.38189+0.0001,longitude: 113.44931+0.0001},
            {latitude: 23.38189+0.0002,longitude: 113.44931+0.0001},//y坐标 +上 -下 x坐标  +右 -左
            {latitude: 23.38189+0.0003,longitude: 113.44931+0.0002},
            {latitude: 23.38189+0.0004,longitude: 113.44931+0.0002},
            {latitude: 23.38189+0.0005,longitude: 113.44931+0.0002},
            {latitude: 23.38189+0.0006,longitude: 113.44931+0.0002},
            {latitude: 23.38189+0.0007,longitude: 113.44931+0.0002},
            {latitude: 23.38189+0.0008,longitude: 113.44931+0.0002},
            {latitude: 23.38189+0.0009,longitude: 113.44931+0.0002},
            {latitude: 23.38189+0.0009,longitude: 113.44931+0.0001},
            {latitude: 23.38189+0.0009,longitude: 113.44931-0.0001},
            {latitude: 23.38189+0.0009,longitude: 113.44931-0.0002},
            {latitude: 23.38189+0.0009,longitude: 113.44931-0.0003},
            {latitude: 23.38189+0.0009,longitude: 113.44931-0.0004},
            {latitude: 23.38189+0.0009,longitude: 113.44931-0.0006},
            {latitude: 23.38189+0.0009,longitude: 113.44931-0.0008},
            {latitude: 23.38189+0.0008,longitude: 113.44931-0.0010},
            {latitude: 23.38189+0.0007,longitude: 113.44931-0.0010},
            {latitude: 23.38189+0.0006,longitude: 113.44931-0.0010},
            {latitude: 23.38189+0.0006,longitude: 113.44931-0.0009},
            {latitude: 23.38189+0.0006,longitude: 113.44931-0.0008},
            {latitude: 23.38189+0.0006,longitude: 113.44931-0.0007},
            {latitude: 23.38189+0.0006,longitude: 113.44931-0.0006},
            {latitude: 23.38189+0.0006,longitude: 113.44931-0.0005},
        ],
        nowfake:0,
    },
    createRandom(start,end){//生成随机数(整数)
        let abs=Math.abs(start-end);
        return Math.round(start+Math.round(Math.random()*abs));
    },
    fake(){//伪装运动函数
        if(!this.data.running){
            setTimeout(this.fake,this.data.interval)
            return
        }
        let markers = this.data.markers//获取坐标数组
        let arr=this.data.fake,now=this.data.nowfake
        let newMarker={//新坐标点
            latitude:arr[now]['latitude'],
            longitude:arr[now]['longitude'],
            iconPath:'red.png',width:10,height:10
        }
        console.log('新坐标',now,newMarker)
        markers.push(newMarker)
        let pace=this.createRandom(16,30)
        if(now<arr.length-1){
            now++
            setTimeout(this.fake,this.data.interval)
        }
        this.setData({//更新时间
            seconds:this.data.seconds+this.data.interval/1000
        })
        this.setData({//设置数据
            latitude:newMarker.latitude,
            longitude:newMarker.longitude,
            nowfake:now,
            markers,
            meters:this.data.meters+pace
        })
    },
    curLocation() { // 设置当前位置
        wx.getLocation({ //wx.获取(当前)位置
            type: 'gcj02' //获取类型
        }).then(res => { //得到结果后
            console.log('当前坐标',res) //输出结果
            let {latitude,longitude} = res //新建 坐标点对象 坐标为结果内的坐标
            this.setData({latitude,longitude}) //设置全局坐标
        })
    },
    test() { //测试
        //新建变量 里程/距离 ,值为指定的两个坐标的间隔
        let meters = utils.getDistance(23.3101, 113.449479, 23.38703, 113.446121) 
        this.setData({meters}) //设置里程
    },
    run() { //运动
        this.setData({ //设置数据
            running: !this.data.running //运动中=!运动中 (取反)
        })
    },
    record(){//记录(运动)
        if(!this.data.running) return//如果不在运动中,直接返回
        this.setData({//设置数据
            //更新累计时间 = 当前时间 + 运动间隔(手动除1000化毫秒为秒)
            seconds:this.data.seconds+this.data.interval/1000
        })
        wx.getLocation({//获取当前坐标
          type:'gcj02'//获取类型
        }).then(res=>{//得到结果
            let newMarker={//新坐标点
                latitude:res.latitude,// 纬度 = 结果.纬度
                longitude:res.longitude,//经度 = 结果.经度
                iconPath:'red.png',//图片路径 = red.png
                width:10,height:10//图片宽高
            }
            console.log('坐标',newMarker)
            let pace = 0//速度(步速)
            let markers = this.data.markers//获取坐标数组
            if(this.data.markers.length>0){//如果数组有坐标
                let lasterMarker = this.data.markers.slice(-1)[0]//上一个坐标 = 数组.切分 倒数第一个
                pace=utils.getDistance(lasterMarker.latitude,lasterMarker.longitude,newMarker.latitude,newMarker.longitude)//速度 = utils.获取距离(点1,点2)
                if(pace>15)//如果速度>15
                    markers.push(newMarker)//加入新坐标
                else //或者
                    pace=0//速度 = 0
            }else{//如果数组为空
                markers.push(newMarker)//直接加入新坐标
            }
            this.setData({//设置数据
                latitude:res.latitude,//纬度 = 结果.纬度
                longitude:res.longitude,//经度 = 结果.经度
                markers,//更新坐标数组
                meters:this.data.meters+pace//距离 = 当前距离+两点距离
            })
        })
    },
    clear(){//清空
        this.setData({markers:[],meters:0,seconds:0})//重置数据
    },
    save(){//保存数据
        let data=this.data//获取当前数据
        console.log('保存数据',data)
        wx.setStorage({//wx.设置缓存
            data,//数据
            key:'map'//关键词(键值) map/地图
        })
    },
    load(){//载入数据
        console.info('载入数据-若报错Object...则说明没有数据可以载入')
        wx.getStorage({//微信.获取缓存
            key:'map'//关键词/键值
        }).then(res=>{//得到结果后
            let d=res.data// 新建变量 d = 结果.数据
            console.log(d)
            this.setData({//设置数据
                markers:d.markers,
                meters:d.meters,
                seconds:d.seconds
            })
        })
    },
    playback(){//回放
        console.log('回放')//提示函数触发
        let arr=this.data.markers//获取坐标数组
        let markers=[]
        this.clear()
        for (const i in arr) {
            let x = arr[i]
            setTimeout(()=>{
                markers.push(x)
                this.setData({
                    markers,
                    latitude:x.latitude,
                    longitude:x.longitude,
                    meters:this.data.meters+this.createRandom(16,30),
                    seconds:this.data.seconds+this.data.interval/1000
                })
            },this.data.interval*(Number(i)+Number(1))/20)
        }
    },
    onLoad() { //当页面加载
        this.load()//载入数据
        this.curLocation()//刷新当前位置
        // setInterval(this.record,this.data.interval)
        setTimeout(this.fake,this.data.interval)
    }
})